package com.minimalist.tc.service;

import com.minimalist.common.config.mybatis.bo.PageResp;
import com.minimalist.common.entity.tc.entity.excel.TcOrderExcelData;
import com.minimalist.common.entity.tc.entity.po.TcOrder;
import com.minimalist.common.entity.tc.entity.vo.order.TcOrderQueryVO;
import com.minimalist.common.entity.tc.entity.vo.order.TcOrderVO;
import com.mybatisflex.core.service.IService;
import jakarta.validation.constraints.NotNull;

import java.util.List;

/**
 * 停车订单表 服务层。
 *
 * @author 11987
 * @since 2025-04-07
 */
public interface TcOrderService extends IService<TcOrder>{

    /**
     * 新增订单。
     *
     * @param orderVO 订单信息
     */
    void addOrder(TcOrderVO orderVO);

    /**
     * 根据订单ID删除订单。
     *
     * @param orderId 订单ID
     */
    void deleteOrderByOrderId(@NotNull(message = "订单ID不能为空") Long orderId);

    /**
     * 根据订单ID更新订单。
     *
     * @param orderVO 订单信息
     */
    void updateOrderByOrderId(TcOrderVO orderVO);

    /**
     * 根据订单ID查询订单。
     *
     * @param queryVO 订单查询条件
     * @return 订单列表
     */
    PageResp<TcOrderVO> getPageOrderList(TcOrderQueryVO queryVO);

    /**
     * 根据订单ID查询订单。
     *
     * @param orderId 订单ID
     * @return 订单信息
     */
    TcOrderVO getOrderByOrderId(@NotNull(message = "订单ID不能为空") Long orderId);

    /**
     * 批量新增订单。
     *
     * @param orderList 订单列表
     */
    void batchAddOrders(List<TcOrderExcelData> orderList, int batchSize);
}
